#include "label.h"

Label::Label(QWidget *parent)
    : QLabel(parent), total(0)
{
        this->setMouseTracking(true);
}

void Label::mousePressEvent(QMouseEvent *event)
{
        // mousePressEvent 这个函数, 按下左键, 右键, 滚轮都能触发。
        // 有的鼠标带有前进后退侧按键... 也可以触发

        if (event->button( ) == Qt::LeftButton)
        {
                qDebug( ) << "按下左键";
        }
        else if (event->button( ) == Qt::RightButton)
        {
                qDebug( ) << "按下右键";
        }

        // 当前event对象包含了鼠标点击位置的坐标
        qDebug( ) << event->x( ) << ", " << event->y( );
        // globalX 和 globalY 是以屏幕左上角为原点, 获取的坐标
        qDebug( ) << event->globalX( ) << ", " << event->globalY( );
}

void Label::mouseReleaseEvent(QMouseEvent *event)
{
        if (event->button( ) == Qt::LeftButton)
        {
                qDebug( ) << "释放左键";
        }
        else if (event->button( ) == Qt::RightButton)
        {
                qDebug( ) << "释放右键";
        }
}

void Label::mouseDoubleClickEvent(QMouseEvent *event)
{
        if (event->button( ) == Qt::LeftButton)
        {
                qDebug( ) << "双击左键";
        }
        else if (event->button( ) == Qt::RightButton)
        {
                qDebug( ) << "双击右键";
        }
}

void Label::mouseMoveEvent(QMouseEvent *event)
{
        // 鼠标移动不同于鼠标按下
        // 随便移动一下鼠标,就会产生大量的鼠标移动事件，当你进行捕获事件的时候,
        // 尤其是在这里进行一些复杂逻辑的时候,程序的负担就很重,很容易产生卡顿之类的情况
        // Qt为了保证程序的流畅性,默认情况下不会对鼠标移动进行追踪,鼠标移动时候不会调用
        // mouseMoveEvent 除非显式告诉Qt就要追踪鼠标位置

        // 把这个选项设置为true, 才能追踪鼠标移动位置
        //  this->setMouseTracking(true);
        qDebug( ) << event->x( ) << "," << event->y( );
}

void Label::wheelEvent(QWheelEvent *event)
{
        // 获取鼠标滚轮的滚动
        total += event->delta( );
        qDebug( ) << total;
}
